////
//// Source code recreated from a .class file by IntelliJ IDEA
//// (powered by Fernflower decompiler)
////
//
//package com.frameworkset.util;
//
//import bboss.org.apache.velocity.Template;
//import bboss.org.apache.velocity.VelocityContext;
//import bboss.org.apache.velocity.app.Velocity;
//import bboss.org.apache.velocity.exception.MethodInvocationException;
//import bboss.org.apache.velocity.exception.ParseErrorException;
//import bboss.org.apache.velocity.exception.ResourceNotFoundException;
//import bboss.org.apache.velocity.runtime.resource.Resource;
//import org.frameworkset.util.ResourceUtils;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//
//import java.io.*;
//import java.net.URL;
//import java.net.URLDecoder;
//import java.util.Iterator;
//import java.util.Map;
//import java.util.Properties;
//
//public class VelocityUtil {
//    private static Logger log = LoggerFactory.getLogger(VelocityUtil.class);
//    private static boolean inited = false;
//    private static boolean VERSION_OLD = true;
//    private static Object lock = new Object();
//
//    public VelocityUtil() {
//    }
//
//    public static boolean OLDVERSION() {
//        init((String)null);
//        return VERSION_OLD;
//    }
//
//    private static File computeApplicationDir(URL location, File defaultDir) {
//        if(location == null) {
//            System.out.println("Warning: Cannot locate the program directory. Assuming default.");
//            return defaultDir;
//        } else if(!"file".equalsIgnoreCase(location.getProtocol())) {
//            System.out.println("Warning: Unrecognized location type. Assuming default.");
//            return new File(".");
//        } else {
//            String file = location.getFile();
//            if(!file.endsWith(".jar") && !file.endsWith(".zip")) {
//                try {
//                    return (new File(URLDecoder.decode(location.getFile(), "UTF-8"))).getParentFile().getParentFile();
//                } catch (UnsupportedEncodingException var4) {
//                    System.out.println("Warning: Unrecognized location type. Assuming default.");
//                    return new File(location.getFile());
//                }
//            } else {
//                try {
//                    File path = null;
//                    if(!isLinux()) {
//                        path = (new File(URLDecoder.decode(location.toExternalForm().substring(6), "UTF-8"))).getParentFile().getParentFile();
//                    } else {
//                        path = (new File(URLDecoder.decode(location.toExternalForm().substring(5), "UTF-8"))).getParentFile().getParentFile();
//                    }
//
//                    return path;
//                } catch (UnsupportedEncodingException var5) {
//                    var5.printStackTrace();
//                    System.out.println("Warning: Unrecognized location type. Assuming default.");
//                    return new File(location.getFile());
//                }
//            }
//        }
//    }
//
//    public static final String getOS() {
//        return System.getProperty("os.name");
//    }
//
//    public static final boolean isWindows() {
//        return getOS().startsWith("Windows");
//    }
//
//    public static final boolean isLinux() {
//        return getOS().startsWith("Linux");
//    }
//
//    public static void init(String approot) {
//        if(!inited) {
//            Object var1 = lock;
//            synchronized(lock) {
//                if(!inited) {
//                    try {
//                        String templatePath;
//                        if(approot == null) {
//                            Properties aop = SimpleStringUtil.getProperties("/aop.properties", VelocityUtil.class);
//                            if(aop != null) {
//                                templatePath = aop.getProperty("approot");
//                                if(templatePath != null && !templatePath.equals("")) {
//                                    approot = templatePath;
//                                }
//                            }
//                        } else {
//                            File f = new File(approot);
//                            if(!f.exists()) {
//                                Properties aop = SimpleStringUtil.getProperties("/aop.properties", VelocityUtil.class);
//                                if(aop != null) {
//                                    String approot_ = aop.getProperty("approot");
//                                    if(approot_ != null && !approot_.equals("")) {
//                                        approot = approot_;
//                                    }
//                                }
//                            }
//                        }
//
//                        //String appDir = FileUtil.apppath + "/WEB-INF";
//                        //log.debug("FileUtil.apppath:" + FileUtil.apppath);
//                        //if(approot != null && !(new File(appDir)).exists()) {
//                        //    appDir = approot + "/WEB-INF";
//                        //}
//                        //
//                        //templatePath = appDir + "/templates";
//                        //File templatePathFile = new File(templatePath);
//                        //Properties pros;
//                        //String approot_;
//                        //if(!templatePathFile.exists()) {
//                        //    pros = SimpleStringUtil.getProperties("/aop.properties", VelocityUtil.class);
//                        //    if(pros != null) {
//                        //        approot_ = pros.getProperty("approot");
//                        //        if(approot_ != null && !approot_.equals("")) {
//                        //            templatePath = SimpleStringUtil.getRealPath(approot_, "/WEB-INF/templates");
//                        //        }
//                        //    }
//                        //}
//                        Properties pros;
//                        String approot_ ="";
//                        templatePath = ResourceUtils.getURL("classpath:").getPath()+"/templates";
//                        log.debug("velocity.properties:" + VelocityUtil.class.getResource("/bboss-velocity.properties"));
//                        pros = SimpleStringUtil.getProperties("/bboss-velocity.properties", VelocityUtil.class);
//                        approot_ = (String)pros.get("file.resource.loader.class");
//                        if(approot_ != null && approot_.equals("bboss.org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader")) {
//                            VERSION_OLD = false;
//                        } else {
//                            pros.setProperty("file.resource.loader.path", templatePath);
//                        }
//
//                        try {
//                            Velocity.init(pros);
//                            inited = true;
//                        } catch (Throwable var11) {
//                            Throwable ex = var11;
//
//                            try {
//                                log.error("Init velocity failed from bboss-velocity.properties：" + ex.getMessage(), ex);
//                                Velocity.init("velocity.properties");
//                                inited = true;
//                            } catch (Exception var10) {
//                                inited = true;
//                                log.error("Init velocity failed:velocity.properties (系统找不到指定的文件。) 检查classpath中是否配置正确:" + var11.getMessage(), var10);
//                            }
//                        }
//                    } catch (Exception var12) {
//                        inited = true;
//                        log.error("Init velocity failed:" + var12.getMessage(), var12);
//                    } catch (Throwable var13) {
//                        inited = true;
//                        log.error("Init velocity failed:" + var13.getMessage(), var13);
//                    }
//
//                }
//            }
//        }
//    }
//
//    public static Template getTemplate(String templateName) {
//        if(SimpleStringUtil.isEmpty(templateName)) {
//            return null;
//        } else {
//            init((String)null);
//            Template template = null;
//
//            try {
//                if(!VERSION_OLD && !templateName.startsWith("templates/")) {
//                    templateName = "templates/" + templateName;
//                }
//
//                template = Velocity.getTemplate(templateName);
//            } catch (ResourceNotFoundException var3) {
//                log.error("Cannot find template " + templateName + ": new version have change template dir as classpath root relatived,but not web-inf dir,please copy templates in web-inf to classpath root dir.", var3);
//            } catch (ParseErrorException var4) {
//                log.error("Syntax error in template " + templateName + ":", var4);
//            } catch (Exception var5) {
//                log.error("Error in Template " + templateName + ":", var5);
//            }
//
//            return template;
//        }
//    }
//
//    public static String evaluate(VelocityContext context, String templateName, String template) {
//        init((String)null);
//        StringWriter out = new StringWriter();
//
//        try {
//            Velocity.evaluate(context, out, templateName, template);
//        } catch (ParseErrorException var5) {
//            var5.printStackTrace();
//            return template;
//        } catch (MethodInvocationException var6) {
//            var6.printStackTrace();
//            return template;
//        } catch (ResourceNotFoundException var7) {
//            var7.printStackTrace();
//            return template;
//        } catch (Exception var8) {
//            var8.printStackTrace();
//            return template;
//        }
//
//        return out.toString();
//    }
//
//    public static void evaluate(VelocityContext context, Writer out, String templateName, String template) {
//        init((String)null);
//
//        try {
//            Velocity.evaluate(context, out, templateName, template);
//        } catch (ParseErrorException var5) {
//            var5.printStackTrace();
//        } catch (MethodInvocationException var6) {
//            var6.printStackTrace();
//        } catch (ResourceNotFoundException var7) {
//            var7.printStackTrace();
//        } catch (Exception var8) {
//            var8.printStackTrace();
//        }
//
//    }
//
//    public static String evaluate(VelocityContext context, String templateName, InputStream template) {
//        init((String)null);
//        StringWriter out = new StringWriter();
//
//        try {
//            Velocity.evaluate(context, out, templateName, template);
//        } catch (ParseErrorException var5) {
//            var5.printStackTrace();
//            return null;
//        } catch (MethodInvocationException var6) {
//            var6.printStackTrace();
//            return null;
//        } catch (ResourceNotFoundException var7) {
//            var7.printStackTrace();
//            return null;
//        } catch (Exception var8) {
//            var8.printStackTrace();
//            return null;
//        }
//
//        return out.toString();
//    }
//
//    public static void evaluate(VelocityContext context, Writer out, String templateName, InputStream template) {
//        init((String)null);
//
//        try {
//            Velocity.evaluate(context, out, templateName, template);
//        } catch (ParseErrorException var5) {
//            var5.printStackTrace();
//        } catch (MethodInvocationException var6) {
//            var6.printStackTrace();
//        } catch (ResourceNotFoundException var7) {
//            var7.printStackTrace();
//        } catch (Exception var8) {
//            var8.printStackTrace();
//        }
//
//    }
//
//    public static String evaluate(VelocityContext context, String templateName, Reader template) {
//        init((String)null);
//        StringWriter out = new StringWriter();
//
//        try {
//            Velocity.evaluate(context, out, templateName, template);
//        } catch (ParseErrorException var5) {
//            var5.printStackTrace();
//            return null;
//        } catch (MethodInvocationException var6) {
//            var6.printStackTrace();
//            return null;
//        } catch (ResourceNotFoundException var7) {
//            var7.printStackTrace();
//            return null;
//        } catch (Exception var8) {
//            var8.printStackTrace();
//            return null;
//        }
//
//        return out.toString();
//    }
//
//    public static void evaluate(VelocityContext context, Writer out, String templateName, Reader template) {
//        init((String)null);
//
//        try {
//            Velocity.evaluate(context, out, templateName, template);
//        } catch (ParseErrorException var5) {
//            var5.printStackTrace();
//        } catch (MethodInvocationException var6) {
//            var6.printStackTrace();
//        } catch (ResourceNotFoundException var7) {
//            var7.printStackTrace();
//        } catch (Exception var8) {
//            var8.printStackTrace();
//        }
//
//    }
//
//    public static VelocityContext buildVelocityContext(Map<String, Object> context) {
//        VelocityContext context_ = new VelocityContext();
//        if(context != null && context.size() > 0) {
//            Iterator it = context.keySet().iterator();
//
//            while(it.hasNext()) {
//                String key = (String)it.next();
//                context_.put(key, context.get(key));
//            }
//        }
//
//        return context_;
//    }
//
//    public static String evaluate(Map context, String templateName, String template) {
//        init((String)null);
//        StringWriter out = new StringWriter();
//
//        try {
//            Velocity.evaluate(buildVelocityContext(context), out, templateName, template);
//        } catch (ParseErrorException var5) {
//            var5.printStackTrace();
//            return template;
//        } catch (MethodInvocationException var6) {
//            var6.printStackTrace();
//            return template;
//        } catch (ResourceNotFoundException var7) {
//            var7.printStackTrace();
//            return template;
//        } catch (Exception var8) {
//            var8.printStackTrace();
//            return template;
//        }
//
//        return out.toString();
//    }
//
//    public static void evaluate(Map context, Writer out, String templateName, String template) {
//        init((String)null);
//
//        try {
//            Velocity.evaluate(buildVelocityContext(context), out, templateName, template);
//        } catch (ParseErrorException var5) {
//            var5.printStackTrace();
//        } catch (MethodInvocationException var6) {
//            var6.printStackTrace();
//        } catch (ResourceNotFoundException var7) {
//            var7.printStackTrace();
//        } catch (Exception var8) {
//            var8.printStackTrace();
//        }
//
//    }
//
//    public static String evaluate(Map context, String templateName, InputStream template) {
//        init((String)null);
//        StringWriter out = new StringWriter();
//
//        try {
//            Velocity.evaluate(buildVelocityContext(context), out, templateName, template);
//        } catch (ParseErrorException var5) {
//            var5.printStackTrace();
//            return null;
//        } catch (MethodInvocationException var6) {
//            var6.printStackTrace();
//            return null;
//        } catch (ResourceNotFoundException var7) {
//            var7.printStackTrace();
//            return null;
//        } catch (Exception var8) {
//            var8.printStackTrace();
//            return null;
//        }
//
//        return out.toString();
//    }
//
//    public static void evaluate(Map context, Writer out, String templateName, InputStream template) {
//        init((String)null);
//
//        try {
//            Velocity.evaluate(buildVelocityContext(context), out, templateName, template);
//        } catch (ParseErrorException var5) {
//            var5.printStackTrace();
//        } catch (MethodInvocationException var6) {
//            var6.printStackTrace();
//        } catch (ResourceNotFoundException var7) {
//            var7.printStackTrace();
//        } catch (Exception var8) {
//            var8.printStackTrace();
//        }
//
//    }
//
//    public static String evaluate(Map context, String templateName, Reader template) {
//        init((String)null);
//        StringWriter out = new StringWriter();
//
//        try {
//            Velocity.evaluate(buildVelocityContext(context), out, templateName, template);
//        } catch (ParseErrorException var5) {
//            var5.printStackTrace();
//            return null;
//        } catch (MethodInvocationException var6) {
//            var6.printStackTrace();
//            return null;
//        } catch (ResourceNotFoundException var7) {
//            var7.printStackTrace();
//            return null;
//        } catch (Exception var8) {
//            var8.printStackTrace();
//            return null;
//        }
//
//        return out.toString();
//    }
//
//    public static void evaluate(Map context, Writer out, String templateName, Reader template) {
//        init((String)null);
//
//        try {
//            Velocity.evaluate(buildVelocityContext(context), out, templateName, template);
//        } catch (ParseErrorException var5) {
//            var5.printStackTrace();
//        } catch (MethodInvocationException var6) {
//            var6.printStackTrace();
//        } catch (ResourceNotFoundException var7) {
//            var7.printStackTrace();
//        } catch (Exception var8) {
//            var8.printStackTrace();
//        }
//
//    }
//
//    public static void initTemplate(Resource template) {
//        init((String)null);
//        Velocity.initTemplate(template);
//    }
//
//    public static void initTemplate(Resource template, String encoding) {
//        init((String)null);
//        Velocity.initTemplate(template, encoding);
//    }
//
//    public static void main(String[] args) {
//        new VelocityUtil();
//        new VelocityContext();
//    }
//}
